package org.wat.wcy.isi.mmazur.bp.io;

import java.util.List;
import java.util.Map;

import org.wat.wcy.isi.mmazur.bp.io.model.BusinessProcess;
import org.wat.wcy.isi.mmazur.bp.io.model.Node;
import org.wat.wcy.isi.mmazur.bp.io.model.enums.NodeType;
import org.wat.wcy.isi.mmazur.bp.io.model.transport.BusinessProcessMatrix;

public interface IBPFacade {
	BusinessProcessMatrix getMatrix(String processName, boolean flat);
	Map<String,String> getElementAdditionalData(final String processId, final String id);
	List<Node> getNextElements(final String processId, int index);
	List<Node> getPrevElements(final String processId,final int index);
	List<Node> getElementsByRole(final String processId, final String laneId);
	int getNextElementsCount(final String processId,final String id);
	int getPrevElementsCount(final String processId,final String id);
	int getProcessNodesCount(final String processId);
	int getProcessNodesCount(final String processId,NodeType nodeType);
	List<Node> getProcessNodes(String processId);
	Node getNode(String processId, String name);
	void createModel(String name);
	void loadModel(String name, String xpdlFileName);
	String generateXpdl(String processName);
	List<BusinessProcess> getProcesses();
	boolean existsProcess(String name);
	boolean removeProcess(String id);
}
